package com.zhima.aspect;

import com.zhima.exception.NotAuthorizationException;
import com.zhima.util.UserHolder;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * @author : 芝麻
 * @date : 2023-08-26 22:09
 **/
@Aspect
public class MustLoginAspect {

    /**
     * 作用于所有标注了@MustLogin的类的所有方法
     * 和标注了@MustLogin的所有方法
     */
    @Pointcut("@within(com.zhima.annotation.MustLogin)||@annotation(com.zhima.annotation.MustLogin)")
    public void mustLoginPointCut() {
    }

    @Before("mustLoginPointCut()")
    public void cutProcess(JoinPoint joinPoint) {
        if (UserHolder.get() == null) {
            throw new NotAuthorizationException();
        }
    }
}
